The present invention relates generally to allocation of computer resources and more specifically relates to a method and system for deploying an application between two or more computers in a fashion that is transparent to a user.
The development of network computing (xe2x80x9cNCxe2x80x9d) technology has spawned the development of several intelligent devices, ranging from simple thin-client desk-top computers, to internet-aware screen phones, mobile phones, personal digital assistants (xe2x80x9cPDAsxe2x80x9d), public kiosks, smart-card based banking devices, etc. The Java computer language has been an important feature of this technological development, as it provides a xe2x80x9cWrite Once, Run Anywherexe2x80x9d platform which is an effective way to pass an application from a server to a device for local execution on the device. Thus, Java provides the ability to transparently deliver, via a communications mechanism, such as a general purpose network or a special purpose communications port, software to a variety of devices having different hardware platforms and has become a standard language for internet applications.
While Java can be run on a variety of different intelligent devices, such intelligent devices still require a minimum set of hardware resources capable of executing necessary resident software applications that allow a user to interact with the device and the network. Thus, developers of intelligent devices are confronted with a tension between the desire to reduce required hardware resources and yet increase device software functionality. Furthermore, software developers wishing to offer an application for execution on a range of devices are confronted with devices having different available hardware resources, and thus an application designed for execution on a device with reduced hardware resources will underutilize available hardware on another device having improved hardware resources.
An additional difficulty is confronted by hardware developers and software developers working concurrently to develop an intelligent device with at least one software application. While a hardware developer can provide proposed specifications to a software developer for the final hardware device, it is possible that the finalized device has hardware functionality (such as central processing unit power or random access memory) which differs from that anticipated, and thus the device would be over or under utilized. The software developer can therefore be required to modify an otherwise completed software application to suit the final hardware design.
It is an object of the present invention to provide a novel method and system of deploying an application between computers which obviates or mitigates at least one of the disadvantages of the prior art.
In an embodiment of the invention, there is provide a method of deploying an application for shared execution between at least one alternate computing resource and a device, comprising the steps of:
categorizing the application into device objects and server objects;
creating a set of managed objects from the server objects;
loading the server objects onto the at least one alternate computing resource; and
loading the managed objects and the device objects onto the device.
In a particular aspect of the embodiment, the alternate computing resource is a Java-based server, and the device is Java-based. Furthermore, the device objects and server objects are based on the JavaBeans specification, and the managed objects are created using the xe2x80x9cmogenxe2x80x9d tool from the Java Dynamic Management Kit.
In another embodiment of the invention, there is provided a system for deploying a device application, the application being categorized into server objects and device objects, where the system comprises a device operable for communication with a computer network and operable for executing the device objects and a set of managed objects, the managed objects being proxies for the server objects. The system also comprises at least one alternate computing resource operable for communication over the network and operable for executing the server objects, the server objects for receiving function calls passed from the managed objects over the network and returning values for the function calls back to the managed objects.
In a particular aspect of the embodiment, the alternate computing resource is a Java-based server, and the device is a Java-based intelligent device.
In yet another embodiment of the invention, there is provided a software application categorizable (i.e. capable of being categorized) into at least one server object and at least one device object, each of the at least one server objects being created by an operation into corresponding managed objects, the at least one server object for execution on an alternate computing resource and for receiving function calls passed from the managed objects and returning values for the function calls back to the managed objects, the at least one device object and the at least one managed object being executable as the application on a device in a transparent fashion to a user.
In another embodiment, there is provided a software application for execution on a device connectable to an alternate computing resource over an network, the application comprising: at least one device object; and, at least one managed object for interaction with the at least one device object, the at least one managed objects each having a corresponding server object executing on the alternate computing resource, the server objects for receiving method calls or function calls passed from the managed objects and returning values for the method calls or function calls back to the managed objects.